
abstract class Config
{
  
    protected Obj delegate

    @Operator
    Void set(Str key, Obj value) { 
         setter := "set"+key.getRange(0..0).upper+key.getRange(1..-1)
         delegate.trap(setter,[value])
    }

                        
    Void setAll (Str:Obj map) {
        map.each |value,key| { set(key,value) }
    }
    
}